import router from "@/router";
import storage from "./storage";
import store from "@/store";
//判断本地是否有token
// 路由守卫
router.beforeEach((to, from, next) => {
  let token = storage.get("token");
  //有token
  if (token) {
    //判断是否有用户菜单
    if (!store.state.permission.userMenu.length) {
      //发起请求获取用户远程菜单
      store.dispatch("permission/FETCH_MENU_LIST").then(() => {
        //这里要注意, next里面要传参数即要进入的页面的路由信息，因为next传参数后，当前要进入的路由会被废止，转而进入参数对应的路由， 虽然是同一个路由，这么做主要是为了确保addRoutes生效了,并且不产生历史记录
        next({ path: to.path, replace: true, query: to.query });
      });
    } else {
      next();
    }
  } else {
    // 没有token
    // 访问的是登录页就放行
    console.log("没有token");
    if (to.path === "/login") {
      next();
    } else {
      //如果访问的不是登录页面 强行跳到登录页
      next({
        path: "/login",
      });
    }
  }
  //to 目标路由对象
  //from 源路由对象
  //next是个函数，调用之后，可以理解为放行
});

export default router;
